Skip to content

Commit 88e639e

Browse files
committed
improve document handler
1 parent e5d888d commit 88e639e

File tree

2 files changed

+54
-2
lines changed

2 files changed

+54
-2
lines changed

kitsune/wiki/handlers.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
from django.contrib.auth.models import Group, User
33

44
from kitsune.users.handlers import UserDeletionListener
5-
from kitsune.wiki.models import Document, Revision
5+
from kitsune.wiki.models import Document, HelpfulVote, Revision
66

77

88
class DocumentListener(UserDeletionListener):
@@ -24,3 +24,8 @@ def on_user_deletion(self, user: User) -> None:
2424
raise ValueError("SumoBot user not found")
2525
else:
2626
Revision.objects.filter(creator=user).update(creator=sumo_bot)
27+
Revision.objects.filter(reviewer=user).update(reviewer=sumo_bot)
28+
Revision.objects.filter(readied_for_localization_by=user).update(
29+
readied_for_localization_by=sumo_bot
30+
)
31+
HelpfulVote.objects.filter(creator=user).update(creator=sumo_bot)

kitsune/wiki/tests/test_handlers.py

Lines changed: 48 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
from kitsune.sumo.tests import TestCase
55
from kitsune.users.tests import GroupFactory, UserFactory
66
from kitsune.wiki.handlers import DocumentListener
7-
from kitsune.wiki.tests import DocumentFactory
7+
from kitsune.wiki.tests import ApprovedRevisionFactory, DocumentFactory, HelpfulVoteFactory
88

99

1010
class TestDocumentListener(TestCase):
@@ -69,3 +69,50 @@ def test_multiple_documents(self):
6969

7070
self.assertTrue(doc3.contributors.filter(id=other_contributor.id).exists())
7171
self.assertEqual(doc3.contributors.count(), 1)
72+
73+
def test_revision_user_fields_replacement(self):
74+
reviewer = UserFactory()
75+
contributor = UserFactory()
76+
rev1 = ApprovedRevisionFactory(
77+
creator=contributor,
78+
reviewer=reviewer,
79+
readied_for_localization_by=reviewer,
80+
)
81+
rev2 = ApprovedRevisionFactory(
82+
creator=self.user,
83+
reviewer=reviewer,
84+
readied_for_localization_by=reviewer,
85+
)
86+
rev3 = ApprovedRevisionFactory(
87+
creator=contributor,
88+
reviewer=self.user,
89+
readied_for_localization_by=self.user,
90+
)
91+
92+
self.listener.on_user_deletion(self.user)
93+
94+
for rev in (rev1, rev2, rev3):
95+
rev.refresh_from_db()
96+
97+
self.assertEqual(rev1.creator.username, contributor.username)
98+
self.assertEqual(rev1.reviewer.username, reviewer.username)
99+
self.assertEqual(rev1.readied_for_localization_by.username, reviewer.username)
100+
self.assertEqual(rev2.creator.username, settings.SUMO_BOT_USERNAME)
101+
self.assertEqual(rev2.reviewer.username, reviewer.username)
102+
self.assertEqual(rev2.readied_for_localization_by.username, reviewer.username)
103+
self.assertEqual(rev3.creator.username, contributor.username)
104+
self.assertEqual(rev3.reviewer.username, settings.SUMO_BOT_USERNAME)
105+
self.assertEqual(rev3.readied_for_localization_by.username, settings.SUMO_BOT_USERNAME)
106+
107+
def test_helpfulvote_creator_replacement(self):
108+
voter = UserFactory()
109+
v1 = HelpfulVoteFactory(creator=voter)
110+
v2 = HelpfulVoteFactory(creator=self.user)
111+
112+
self.listener.on_user_deletion(self.user)
113+
114+
v1.refresh_from_db()
115+
v2.refresh_from_db()
116+
117+
self.assertEqual(v1.creator.username, voter.username)
118+
self.assertEqual(v2.creator.username, settings.SUMO_BOT_USERNAME)

0 commit comments

Comments
 (0)